#include "tmcopyfileworker.h"
#include <QDebug>

TMCopyFileWorker::TMCopyFileWorker(QObject *parent) : QObject(parent)
{

}


//拷贝文件夹：
void TMCopyFileWorker::slot_copyDir(const QString &fromDir, const QString &toDir)
{
    QDir sourceDir(fromDir);
    QDir targetDir(toDir);
    if(!targetDir.exists()){    /* 如果目标目录不存在，则进行创建 */
        if(!targetDir.mkdir(targetDir.absolutePath()))
            return;
    }

    QFileInfoList fileInfoList = sourceDir.entryInfoList(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot);
    foreach(QFileInfo fileInfo, fileInfoList){
        if(targetDir.exists(fileInfo.fileName())){
            targetDir.remove(fileInfo.fileName());
        }
        if(fileInfo.isDir()){    /* 当为目录时，递归的进行copy */
            slot_copyDir(fileInfo.filePath(),targetDir.filePath(fileInfo.fileName()));
        }
        else{            /* 当允许覆盖操作时，将旧文件进行删除操作 */
            if(targetDir.exists(fileInfo.fileName())){
                targetDir.remove(fileInfo.fileName());
            }

            // 进行文件copy
            if(QFile::copy(fileInfo.filePath(),targetDir.filePath(fileInfo.fileName()))){
                emit sig_updateProgressBar();
            }
        }
    }

    return;
}

void TMCopyFileWorker::slot_extractDir(const QString &filePath, const QString &toDir)
{
    QStringList list = JlCompress::extractDir(filePath,toDir);

    emit sig_extractDirSuccess(list);
}
